package model

//Page 分页结构体
//之所以用int64是因为前端传字符串过来需转换为int,这种转换默认是int64，统一一下干脆都int64
type Page struct {
	Books       []*Book //书籍切片，包含了书籍信息
	PageNo      int64   //当前页数，前端传过来
	PageSize    int64   //每页显示的条数，自己定义，一般写死，可以与配置文件关联
	TotalPageNo int64   //总页数，由总条数计算所得
	TotalRecord int64   //总条数，由数据库count(*)查询得到
	MinPrice    string  //最低价格，这两个Price是用于指定价格范围
	MaxPrice    string  //最高价格
	IsLogin     bool    //加这个是为了在让模板的html部分显示
	Username    string  //这个是为了在首页显示欢迎xxx
}

//IsHasPrev 判断是否有上一页，之所以独立出来判断是为了在模板那if显示
func (p *Page) IsHasPrev() bool {
	return p.PageNo > 1
}

//IsHasNext 判断是否有下一页
func (p *Page) IsHasNext() bool {
	return p.PageNo < p.TotalPageNo
}

//GetPrevPageNo 获取上一页页码
func (p *Page) GetPrevPageNo() int64 {
	if p.IsHasPrev() {
		return p.PageNo - 1
	}
	return 1

}

//GetNextPageNo 获取下一页页码
func (p *Page) GetNextPageNo() int64 {
	if p.IsHasNext() {
		return p.PageNo + 1
	}
	return p.TotalPageNo

}
